import CryptoJS from 'crypto-js'
// import Base64 from 'crypto-js/enc-base64';
// import AES from 'crypto-js/aes';
// import WordArray from 'lib-typedarrays';

// 与后端约定的用户ID加密方式
export function encryptUserId(i) {
  return i ? (Number(i) + 12254978) * 2 : 0
}

// 内参中广告词和业主信息解密方法
export function decryptData({ da, de }) {
  const rawData = CryptoJS.enc.Base64.parse(da);
  const iv = CryptoJS.lib.WordArray.create(rawData.words.slice(0, 4)); // IV固定为16字节，即4个词
  const ciphertext = CryptoJS.lib.WordArray.create(rawData.words.slice(4));

  const keyWordArray = CryptoJS.enc.Base64.parse(de);
  const decrypted = CryptoJS.AES.decrypt({ ciphertext: ciphertext }, keyWordArray, {
    iv: iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
  });

  const plaintext = decrypted.toString(CryptoJS.enc.Utf8);
  return JSON.parse(plaintext);
}

// 文本提取处理
export function extractText(Obj, mtype = 'football', strary) {
  let itemResContent = []
  // 过滤广告词
  const contentslice = Obj.content.slice()
  const resContent = []
  for (let i = 0; i < contentslice.length; i++) {
    let element = contentslice[i];
    for (let j = 0; j < strary.length; j++) {
      const _txt = strary[j]
      const regex = new RegExp(_txt, 'g')
      element = element.replace(regex, '')
    }
    resContent.push(element)
  }
  // =========标题对应的内容处理
  if (Obj.type === 11) {
    // 足球深度解析11数据
    itemResContent = splitContent(resContent)
  } else {
    // 默认足球数据10|篮球数据4|传足数据2
    const regContent = []
    let newContent = []
    if (resContent.length <= 2 && mtype === 'tradition') {
      // 针对传足输出数组长度为2
      // 结构1['队伍实力分析：\n根据俱乐部...。\n\n攻防能力分析：\n根据最近...。\n\n指数变动分析：\n根据指数...。', '综合以上分析，可以...']
      // 结构2['队伍实力分析，\n根据俱乐部...。\n\n攻防能力分析，\n根据最近...。\n\n指数变动分析，\n根据指数...。', '综合以上分析，可以...']
      resContent.forEach((_cont, _index) => {
        // 可能存在的换行符 ['\n\n', '\r\n','\r\n\r\n']
        _cont = _cont.replace(/(\r\n){1,2}/g, '\n\n')
        if (_index === 0) {
          // 前端进行分段处理
          const _cont1 = _cont.split('\n\n')
          _cont1.forEach((c) => {
            c = c.replace('：', '，')
            const ary = []
            const _reg = /^([^，\s]+(?=[，]))，([\s\S]*)/
            const _match = c.match(_reg)
            if (_match) ary.push(_match[1], _match[2])
            regContent.push(ary)
          })
        } else {
          regContent.push(['综合分析', _cont])
        }
      })
    } else {
      if (resContent.length <= 3 && mtype !== 'tradition') {
        // 前端进行分段处理
        const _content = []
        resContent.forEach((c, ci) => {
          c = c.replace(/^(\d)./, '$1、')
          if (!/^\d/.test(c) && /[\n\r]?\n\d、?/.test(c)) {
            let _i = ci - 1 >= 0 ? ci - 1 : 0
            _content[_i] += c
          } else {
            _content.push(c)
          }
        })
        const _res = _content.map(c => c.replace('undefined', '').replace(/\r\n/g, '\n\n').split('\n\n')).flat()
        const _nres = []
        _res.forEach((e) => {
          if (!/(\d+、.+?)?：/.test(e) && !/^综合/.test(e)) {
            _nres[_nres.length - 1] += e
          } else {
            _nres.push(e)
          }
        })
        newContent = _nres.map((e, i) => `${i + 1}、${e.replace(/^\d、/, '')}`)
      } else {
        newContent = resContent.map(c => c.replace(/^(\d)./, '$1、'))
      }
      newContent.forEach((item2) => {
        const ary = []
        item2 = item2.replace(/:/g, '：')

        if (/^(\d+、)?综合/.test(item2)) {
          const _reg = /(.+?)，([\s\S]*)/
          const _match = item2.match(_reg)
          // console.log("🚀if _match:", _match)
          if (_match) ary.push('综合分析', `\n${_match[2]}`)
        } else {
          const _reg = /(\d+、.+?)?：\n?([\s\S]*)/
          const _match = item2.match(_reg)
          // console.log("🚀else _match:", _match)
          if (_match) {
            const c1 = _match[1] ? _match[1].replace(/(\d\.)/g, '').replace(/(\d、)/g, '') : ''
            if (c1 && _match[2]) ary.push(c1, `${_match[2]}`)
          }
        }
        regContent.push(ary)
      })
    }
    itemResContent = regContent.filter(c => c.length)
  }
  // 主客队队名 突出展示增加颜色
  const reghome = new RegExp(Obj.home, 'g')
  const regguest = new RegExp(Obj.guest, 'g')
  const results = []
  for (let i = 0; i < itemResContent.length; i++) {
    const ary = itemResContent[i]
    const strs = ary[1].replace(reghome, `<b class="home">${Obj.home}</b>`).replace(regguest, `<b class="guest">${Obj.guest}</b>`)
    results.push([ary[0], strs])
  }
  return results
}

// 足球深度解析数据
function splitContent(contentArray) {
  const result = [];
  const regex = /^\d+\.([^\n]+)\n([\s\S]*)$/;

  contentArray.forEach(item => {
    const match = item.match(regex);
    if (match) {
      result.push([match[1], match[2]])
    }
  });

  return result;
}
